package servlets;

import java.io.IOException;
import java.util.Date;

import javaUtils.DateUtil;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.bind.ValidationException;

import business.BusinessDelegate;
import controller.ISistema;
import dto.ReservaDTO;
import dto.SucursalDTO;


/**
 * Servlet implementation class ReservarServlet
 */
public class ReservarServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ReservarServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String fecha=request.getParameter("fecha");
		Integer hora=Integer.parseInt(request.getParameter("hora"));
		Integer cantidad=Integer.parseInt(request.getParameter("cantidad"));
		System.out.println("fecha: "+ fecha);
		System.out.println("cantidad :"+ cantidad);
		Date fechaDate=DateUtil.getInstancia().getFecha(fecha);
		
		ReservaDTO reservaDTO=new ReservaDTO();
		reservaDTO.setCantidad(cantidad);
		reservaDTO.setFecha(fechaDate);
		reservaDTO.setHora(hora);
		HttpSession session=request.getSession();
		int nroSucursal=(Integer) session.getAttribute("nroSucursal");
		String usuario=(String) session.getAttribute("usuario");
		SucursalDTO suc= new SucursalDTO();
		suc.setId(nroSucursal);
		//me falta el salonDTO!!!!!
		
			try {
				ISistema sistema=BusinessDelegate.getInstance().getSistema();
				ReservaDTO res;
				
					res = sistema.reservar(reservaDTO, suc);
					BusinessDelegate.getInstance().getSistema().log(usuario, "Se creo la reserva numero: "+String.valueOf(res.getIdReserva())+" para "+String.valueOf(cantidad)+" personas, el dia "+String.valueOf(fecha)+" a la hora "+String.valueOf(hora)+" satisfactoriamente");
					request.getSession().setAttribute("reservita", res);
					request.getRequestDispatcher("Reservar.jsp").forward(request, response);
					
					} catch (Exception e) {
						String mensaje=e.getMessage();
						try {
							BusinessDelegate.getInstance().getSistema().log(usuario, "ADVERTENCIA: Se intento crear una reserva para "+String.valueOf(cantidad)+" personas, el dia "+String.valueOf(fecha)+" a la hora "+String.valueOf(hora)+" y no fue posible. Error: "+mensaje);
						} catch (ValidationException e1) {}
						RequestDispatcher rd = request.getRequestDispatcher("Reservar.jsp");
						request.setAttribute("mensaje", mensaje);
						rd.forward(request, response); 
					}
			
				
			
			
			
		
		
	}

}
